package cn.ydxiaoshuai.modules.zsyx.controller;

import cn.ydxiaoshuai.common.api.vo.Result;
import cn.ydxiaoshuai.common.aspect.annotation.AutoLog;
import cn.ydxiaoshuai.modules.liteuser.entity.LiteUserInfo;
import cn.ydxiaoshuai.modules.liteuser.service.ILiteUserInfoService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.api.ApiController;
import com.baomidou.mybatisplus.extension.api.R;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import cn.ydxiaoshuai.modules.zsyx.entity.ZsyxYjNew;
import cn.ydxiaoshuai.modules.zsyx.service.ZsyxYjNewService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
 * 掌上有信_邮件(ZsyxYjNew)表控制层
 *
 * @author makejava
 * @since 2023-08-20 18:02:20
 */
@Api(tags="掌上有信_邮件")
@Slf4j
@RestController
@RequestMapping("/zsyx/zsyxYjNew")
public class ZsyxYjNewController extends ApiController {
    /**
     * 服务对象
     */
    @Resource
    private ZsyxYjNewService zsyxYjNewService;

    @Autowired
    private ILiteUserInfoService liteUserInfoService;

    /**
     * 首页获取随机6条新邮件
     * @return 所有数据
     */
    @RequestMapping(value = "/randomList", method = RequestMethod.GET)
    public Result<?> randomList() {
        return Result.ok(this.zsyxYjNewService.randomList());
    }


    /**
     *新增邮件
     *
     * @param zsyxYjNew 实体对象
     * @return 新增结果
     */
    @AutoLog(value = "发件信息插入")
    @ApiOperation(value="发件信息插入", notes="发件信息插入")
    @PostMapping("insert")
    public Result<?>  insert( ZsyxYjNew zsyxYjNew) {

        LambdaQueryWrapper<LiteUserInfo> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(LiteUserInfo::getUserId, zsyxYjNew.getFjrUserId());
        LiteUserInfo liteUser = liteUserInfoService.getOne(queryWrapper);
        zsyxYjNew.setCreateTime(new Date());
        zsyxYjNew.setFjrUserName(liteUser.getNickName());
        this.zsyxYjNewService.save(zsyxYjNew);

        return Result.ok(zsyxYjNew);
    }

    /**
     *回复邮件
     *
     * @param zsyxYjNew 实体对象
     * @return 新增结果
     */
    @PostMapping("comment")
    public Result<?> comment(@RequestBody ZsyxYjNew zsyxYjNew) {
        zsyxYjNew.setType(1);
        this.zsyxYjNewService.save(zsyxYjNew);

        return Result.ok(zsyxYjNew);
    }


    /**
     * 分类查询我的邮件 yjType 1发件 2收件
     * @return 所有数据
     */
    @RequestMapping(value = "/findByParam", method = RequestMethod.GET)
    public Result<?> findByParam(Page<ZsyxYjNew> page,@RequestParam("yjType") Integer yjType,
                         @RequestParam(required = false,name = "keyWord") String keyWord ,@RequestParam("userId")String userId) {

        Page<ZsyxYjNew> zsyxYjNewPages=zsyxYjNewService.findByParam(page,yjType,keyWord,userId);
        return Result.ok(zsyxYjNewPages);
    }

    /**
     * 通过主键查询单条数据
     *
     * @param id 主键
     * @return 单条数据
     */
    @GetMapping("getXjById")
    public Result<?>  selectOne(@RequestParam("id")  String id) {
        ZsyxYjNew zsyxYjNew=zsyxYjNewService.getById(id);
        return Result.ok(zsyxYjNew);
    }

}

